package game;

import java.awt.Point;
import java.util.LinkedList;
import java.util.Random;

class SnakeInitData {
	/** 0.地图的宽和高常量 */
	public final int WIDTH = 120;
	public static final int HEIGHT = 30;
	
	/** 1.地图 用一个二维字符数组存储地图的所有坐标 */
	char[][] map = new char[HEIGHT][WIDTH];

	/** 2.蛇 用一个LinkList<Point>集合存储蛇的完整信息 集合中的是Point对象，Point对象存储每一节蛇 */
	LinkedList<Point> snake = new LinkedList<Point>();

	/** 3.蛇头 用一个Point坐标对象存储蛇头 */
	public Point snakeHead;
	
	/** 4.食物 用一个Point坐标对象存储食物 */
	public Point food = new Point();

	/**
	 * 初始化地图
	 * @param null
	 */
	public void initMap() {
		for (int col = 0; col < map.length; col++) { // 列
			for (int row = 0; row < map[col].length; row++) { // 行

				// 过滤掉边界以外的地图空间
				if (row == 0 || row == (map[col].length - 1) || col == 0
						|| col == (map.length - 1)) {
					map[col][row] = '*'; // 地图中只有边界才显示 '*' 号

				} else {
					map[col][row] = ' '; // 地图中其它地方显示空白
				}
			}
		}
	}

	/**
	 * 初始化蛇
	 * 
	 * @param null
	 */
	public void initSnake() {
		snake.addFirst(new Point(WIDTH / 2 - 2, HEIGHT / 2)); 	// 添加蛇尾
		snake.addFirst(new Point(WIDTH / 2 - 1, HEIGHT / 2)); 	// 添加蛇身
		snake.addFirst(new Point(WIDTH / 2, HEIGHT / 2)); 		// 添加蛇头
	}

	/**
	 * 初始化食物
	 * 
	 * @param null
	 */
	public void initFood() {
		Random random = new Random();

		while (true) {
			// 在地图长宽范围内取随机数
			int x = random.nextInt(WIDTH);
			int y = random.nextInt(HEIGHT);

			// 当取得和随机数坐标在对应的地图上没有墙'*'时,把这个坐标赋给食物，并跳出循环
			if (map[y][x] != '*') {
				food.x = x;
				food.y = y;
				break;
			}
		}
	}

	
}